home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / share / misc / getopt / getopt-parse.bash next >
Text File  |  2006-04-25  |  2KB  |  48 lines

  1. #!/bin/bash
  2.  
  3. # A small example program for using the new getopt(1) program.
  4. # This program will only work with bash(1)
  5. # An similar program using the tcsh(1) script language can be found
  6. # as parse.tcsh
  7.  
  8. # Example input and output (from the bash prompt):
  9. # ./parse.bash -a par1 'another arg' --c-long 'wow!*\?' -cmore -b " very long "
  10. # Option a
  11. # Option c, no argument
  12. # Option c, argument `more'
  13. # Option b, argument ` very long '
  14. # Remaining arguments:
  15. # --> `par1'
  16. # --> `another arg'
  17. # --> `wow!*\?'
  18.  
  19. # Note that we use `"$@"' to let each command-line parameter expand to a 
  20. # separate word. The quotes around `$@' are essential!
  21. # We need TEMP as the `eval set --' would nuke the return value of getopt.
  22. TEMP=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \
  23.      -n 'example.bash' -- "$@"`
  24.  
  25. if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
  26.  
  27. # Note the quotes around `$TEMP': they are essential!
  28. eval set -- "$TEMP"
  29.  
  30. while true ; do
  31.     case "$1" in
  32.         -a|--a-long) echo "Option a" ; shift ;;
  33.         -b|--b-long) echo "Option b, argument \`$2'" ; shift 2 ;;
  34.         -c|--c-long) 
  35.             # c has an optional argument. As we are in quoted mode,
  36.             # an empty parameter will be generated if its optional
  37.             # argument is not found.
  38.             case "$2" in
  39.                 "") echo "Option c, no argument"; shift 2 ;;
  40.                 *)  echo "Option c, argument \`$2'" ; shift 2 ;;
  41.             esac ;;
  42.         --) shift ; break ;;
  43.         *) echo "Internal error!" ; exit 1 ;;
  44.     esac
  45. done
  46. echo "Remaining arguments:"
  47. for arg do echo '--> '"\`$arg'" ; done
  48.